package com.taxi.driver.widget.dialog;

import android.content.Context;

import com.qianxx.view.wheel.hh.SelectorDialog;

import java.util.ArrayList;
import java.util.List;


/**
 * Created on 2016/12/21 上午10:50.
 *
 * @author binwin20
 */

public class TimeSelectorDialog {

    private SelectorDialog mDialog;

    private int tabStart0;
    private int tabStart1;
    private int tabStart2;

    // 选择滚轮的时间，不是滚轮位置
//    private int[] select = new int[3];

    private List<String> tab0Strs;
    private List<String> tab1Strs;
    private List<String> tab2Strs;

//    private Calendar now;

    /**
     * @param context
     * @param title
     * @param defaultTime
     * @param listener
     */
    public TimeSelectorDialog(Context context, String title, long defaultTime, TimeSelectorListener listener) {
        SelectorDialog.WheelConfig wheelConfig = new SelectorDialog.WheelConfig.Builder(3, title).build();
        SelectorDialog.SelectorListener selectorListener = new SelectorDialog.SelectorListener() {

            @Override
            public void onSelected(int column, int selectPosition, SelectorDialog dialog) {
//                select[column] = getSelect(column, selectPosition);
//                KLog.e("=======selectPosition======="+selectPosition);
                for (int i = column + 1; i < 3; i++) {
                    update(i);
                }
            }

            @Override
            public void onCancel() {
            }

            @Override
            public void onConfirm(int[] selectPositions) {

                if (listener!=null){
                    String year=tab0Strs.get(selectPositions[0]);
                    String month=tab1Strs.get(selectPositions[1]);
                    String day=tab2Strs.get(selectPositions[2]);
                    listener.selected(year,month ,day);
                }




 /*               if (listener != null) {
                    Calendar tmp = (Calendar) now.clone();
//                 String  select=   tab1Strs.get(selectPositions[0]);
//                    tmp.set(Calendar.YEAR, getSelect(0, selectPositions[0]));
//                    tmp.set(Calendar.MONTH, getSelect(1, selectPositions[0]));
//                    tmp.set(Calendar.DAY_OF_MONTH, getSelect(2, selectPositions[0]));
//                    tmp.set(Calendar.SECOND, 0);
//                    tmp.set(Calendar.MILLISECOND, 0);
                    listener.selected(tmp);
                }*/
            }
        };

        mDialog = new SelectorDialog(context, wheelConfig, selectorListener);
//        now = Calendar.getInstance();

//        // 获取20分钟后的整分
//        Date delayDate = new Date(System.currentTimeMillis());
//        int delayMin = (delayDate.getMinutes() / 10 + (delayDate.getMinutes() % 10 == 0 ? 0 : 1) + 2) * 10;
//        delayDate.setMinutes(delayMin);
//        long delayStamp = delayDate.getTime();

//        Calendar delay = Calendar.getInstance();
//        delay.setTimeInMillis(delayStamp);

//        if (now.get(Calendar.DAY_OF_MONTH) != delay.get(Calendar.DAY_OF_MONTH)) {
//            tabStart0 = 1;
//        }
//
//        tabStart1 = delay.get(Calendar.HOUR_OF_DAY);
//
//        tabStart2 = delay.get(Calendar.MINUTE) / 10;

        // 选择默认时间
//        long selectedTime = defaultTime;
//        if (selectedTime < delayStamp) {
//            selectedTime = delayStamp;
//        }
//
//        Calendar selectCalendar = Calendar.getInstance();
//        selectCalendar.setTimeInMillis(selectedTime);

//        // 选择的天: 0 今天; 1 明天; 2 后天
//        select[0] = (selectCalendar.get(Calendar.DAY_OF_WEEK) - now.get(Calendar.DAY_OF_WEEK) + 7) % 7;
//        // 选择的小时
//        select[1] = selectCalendar.get(Calendar.HOUR_OF_DAY);
//        // 选择分钟
//        select[2] = selectCalendar.get(Calendar.MINUTE) / 10;

        tab0Strs = new ArrayList<>();
        tab1Strs = new ArrayList<>();
        tab2Strs = new ArrayList<>();

        update(0);
        update(1);
        update(2);
    }

//    private int getSelect(int column, int position) {
//        if (column == 0)
//            return position + tabStart0;
//        if (column == 1) {
//            return position + (select[0] == tabStart0 ? tabStart1 : 0);
//        }
//        if (column == 2) {
//            return position + (select[0] == tabStart0 && select[1] == tabStart1 ? tabStart2 : 0);
//        }
//        return 0;
//    }

    private void update(int column) {
        if (column == 0) {
            tab0Strs.clear();
            for (int i=1970;i<=2020;i++){
                tab0Strs.add(i+"年");
            }
//            if (tabStart0 == 1 && tab0Strs.size() != 2) {
//                tab0Strs.clear();
//                tab0Strs.add("明天");
//                tab0Strs.add("后天");
//            } else if (tab0Strs.size() != 3) {
//                tab0Strs.clear();
//                tab0Strs.add("今天");
//                tab0Strs.add("明天");
//                tab0Strs.add("后天");
//            }
//            int sel0 = Math.max(select[0] - tabStart0, 0);
            mDialog.setWheel(0, tab0Strs, 48);
        } else if (column == 1) {
            tab1Strs.clear();
//            int sel1;
            for (int i = 1; i <=12; i++) {
                tab1Strs.add(i + "月");
            }
//            sel1 = Math.max(select[1] - tabStart1, 0);
            mDialog.setWheel(1, tab1Strs, 5);

//            int sel1;
//            int size = 24 - tabStart1;
//            if (select[0] <= tabStart0) { // 第一个滚轮到最顶部了
//                if (tab1Strs.size() != size) {
//                    tab1Strs.clear();
//                    for (int i = tabStart1; i < 24; i++) {
//                        tab1Strs.add(i + "点");
//                    }
//                    sel1 = Math.max(select[1] - tabStart1, 0);
//                    mDialog.setWheel(1, tab1Strs, sel1);
//                }
//            } else if (tab1Strs.size() != 24) {
//                tab1Strs.clear();
//                for (int i = 0; i < 24; i++) {
//                    tab1Strs.add(i + "点");
//                }
//                sel1 = select[1];
//                mDialog.setWheel(1, tab1Strs, sel1);
//            }
        } else if (column == 2) {
            tab2Strs.clear();
                for (int i = 1; i <= 31; i++) {
                    tab2Strs.add(i + "日");
                }
//                sel2 = select[2];
                mDialog.setWheel(2, tab2Strs, 15);
//            int sel2;
//            int size = 6 - tabStart2;
//            if (select[0] <= tabStart0 && select[1] <= tabStart1) { // 第一个滚轮到最顶部了
//                if (tab2Strs.size() != size) {
//                    tab2Strs.clear();
//                    for (int i = tabStart2; i < 6; i++) {
//                        tab2Strs.add(i + "0分");
//                    }
//                    sel2 = Math.max(select[2] - tabStart2, 0);
//                    mDialog.setWheel(2, tab2Strs, sel2);
//                }
//            } else if (tab2Strs.size() != 6) {
//                tab2Strs.clear();
//                for (int i = 0; i < 6; i++) {
//                    tab2Strs.add(i + "0分");
//                }
//                sel2 = select[2];
//                mDialog.setWheel(2, tab2Strs, sel2);
//            }
        }
    }

    public void show() {
        mDialog.show();
    }

    public interface TimeSelectorListener {
        void selected(String year,String month,String day);
    }
}
